//======================
//模型：Estate模型, estate表
//======================
let {DataTypes, Model} = require('sequelize');

class Estate extends Model {}

//定义模型结构, 数据表结构
Estate.init({
  id: {
    type: DataTypes.INTEGER.UNSIGNED,
    autoIncrement: true,
    primaryKey: true,
    allowNull: false,
    comment: '表id'
  },

  estateId: {
    type: DataTypes.INTEGER.UNSIGNED,
    allowNull: false,
    comment: '小区id'
  },

  estateName:{
    type: DataTypes.STRING(20),
    allowNull: false,
    comment: '小区名'
  },

  city:{
    type: DataTypes.STRING(10),
    allowNull: false,
    // defaultValue: '广州',
    comment: '小区所在城市'
  },

  location:{
    type: DataTypes.STRING(10),
    allowNull: false,
    comment: '小区所在区域'
  },

  average:{
    type: DataTypes.FLOAT,
    allowNull: false,
    defaultValue: 0,
    comment: '均价'
  },

  sellingTotal:{
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: '在售总数'
  },

  deal:{
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: '30天成交量'
  },

  img:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: 'http://127.0.0.1:10001/static/file/estate_default.png',
    comment: '小区图片'
  },

  imgList:{
    type: DataTypes.STRING,
    allowNull: true,
    defaultValue: null,
    comment: '小区详细图片'
  },

  builtYear:{
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: '建成年代'
  },

  purpose:{
    type: DataTypes.STRING(10),
    allowNull: false,
    defaultValue: '商品房',
    comment: '小区物业用途'
  },

  address:{
    type: DataTypes.STRING,
    allowNull: true,
    comment: '地址'
  },

  growth:{
    type: DataTypes.INTEGER,
    allowNull: false,
    defaultValue: 0,
    comment: '增长趋势 - 0降1增'
  },
  
  nature:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '商品房',
    comment: '产权性质'
  },

  property:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '落新家物业管理公司',
    comment: '物业公司'
  },

  branch:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '落新家分店',
    comment: '附近门店'
  },

  structure:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '板楼',
    comment: '房源类型'
  },

  plannednumber:{
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: '规划户数'
  },

  carplace:{
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: '车位个数'
  },

  builtArea:{
    type: DataTypes.FLOAT,
    allowNull: false,
    comment: '建筑面积'
  },

  volume:{
    type: DataTypes.FLOAT,
    allowNull: false,
    comment: '容积比率'
  },

  green:{
    type: DataTypes.INTEGER,
    allowNull: false,
    comment: '绿化比例'
  },

  water:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '民水',
    comment: '民水'
  },

  power:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '民电',
    comment: '民电'
  },

  gas:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '燃气',
    comment: '燃气'
  },

  propertyFee:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '物业费用'
  },

  facilities:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '小区配套'
  },

  sport:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '体育设施'
  },

  desc:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '小区描述'
  },

  traffic:{
    type: DataTypes.STRING,
    allowNull: false,
    defaultValue: '',
    comment: '交通描述'
  },
  
}, {

  //指定连接实例，这样才知道在指定数据库创建estate表
  sequelize,

  //模型名称, 当没有指定表名时，sequelize推断名称为模型名称的复数 ==> estates作为表名
  modelName: 'estate',

  //不推断，直接使用模型作为表名 ==> estate作为表名
  freezeTableName: true,

  //指定表名
  tableName: 'estate'
})

//同步数据库表
//force: true ==> 删除原有estate表，新建estate表
//force: false ==> 如果estate存在，则不创建，反之，不创建estate表
Estate.sync({force: false});

module.exports = Estate;
